package web;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.birrap.ejb.BaresCervezasTapasVasosTBeanLocal;
import org.birrap.ejb.BaresTBeanLocal;
import org.birrap.entities.BaresCervezasTapasVasosT;
import org.birrap.entities.BaresT;


@ManagedBean
@SessionScoped
public class TablaBaresTManagedBean implements Serializable {
    
    @EJB
    private BaresTBeanLocal baresBean;
    
    @EJB
    private BaresCervezasTapasVasosTBeanLocal baresCervezasTapasVasosBean;
    
    private List<BaresT> bares;
    
    private List<BaresCervezasTapasVasosT> coleccionTresBares;
	
    private BaresT selectedBar;
    
    private double cervezaMasBarataEnBar;
        
    public TablaBaresTManagedBean() 
    {
      bares = new ArrayList<BaresT>();
    }
    
	
    public BaresT getSelectedBar() 
    {
            return selectedBar;
    }

    public void setSelectedBar(BaresT selectedBar) 
    {
            this.selectedBar = selectedBar;
    }


    public List<BaresT> getBares() 
    {
        List<BaresT> baresPedidos = baresBean.findBaresConCervezas();
        
        if(baresPedidos == null){
            baresPedidos = new ArrayList<BaresT>();
        }
        else
        {
        bares = baresPedidos;
        }
            return bares;
    }
        
    public String irADetalles ()
    {
        FacesContext facesContext = FacesContext.getCurrentInstance(); 
        
        DetalleManagedBean detalleManagedBean = FacesContext.getCurrentInstance()
                                                            .getApplication()
                                                            .evaluateExpressionGet(facesContext, 
                                                                                   "#{detalleManagedBean}", 
                                                                                   DetalleManagedBean.class); 
        detalleManagedBean.setBar(selectedBar);
        
        return "DETALLE";
    }
    
    public double getcervezaMasBarataEnBar(BaresCervezasTapasVasosT barCerTapVaso)
    {
        cervezaMasBarataEnBar = 
                baresCervezasTapasVasosBean.findMasBarataByIdBar(barCerTapVaso.getBaresT()
                                           .getIdBar());
        return cervezaMasBarataEnBar;
    }
    
    public List<BaresCervezasTapasVasosT> getColeccionTresBares(BaresT bar)
    {
     
        int numbares = 3;
        coleccionTresBares = new ArrayList<BaresCervezasTapasVasosT>();
        
        List<BaresCervezasTapasVasosT> coleccionBares = 
                new ArrayList(baresCervezasTapasVasosBean.findBaresByIdBar(bar.getIdBar()));
        
         Collections.sort(coleccionBares, new Comparator<BaresCervezasTapasVasosT>() 
         {
            @Override
            public int compare(BaresCervezasTapasVasosT b1, BaresCervezasTapasVasosT b2) {
                Double precio1 = b1.getPrecio();
                Double precio2 = b2.getPrecio();
                return precio1.compareTo(precio2);
            }
        });
         
        for(int i=0; i!=numbares; i++)
        {
            if(coleccionBares.isEmpty()){
            
            }
            else{
                
            
                if(coleccionBares.size() < 3)
                {
                    numbares=coleccionBares.size();
                }
                if(coleccionBares.get(i)!=null  && coleccionTresBares!=null){
                    coleccionTresBares.add(coleccionBares.get(i));
                }
            }
        }
        return coleccionTresBares;
    }
    

    
}
